ลองนึกภาพการเดินทางผ่านภูมิประเทศที่กว้างใหญ่ ไม่ว่าคุณจะขับรถบนถนนตรง (ชนิดของ vector) หรือเดินป่าตามทางลัดในป่า (ชนิดของ list) คุณก็ต้องการระบบนำทางแบบอเนกประสงค์ ซึ่งในภาษา C++ ระบบนำทางนั้นคือตัวชี้ (Iterator) ตัวชี้ (Iterator).
สะพานแห่งการเขียนโปรแกรมแบบทั่วไป
ตัวชี้ (Iterator) ทำหน้าที่เป็นกลไกทั่วไปสำหรับการเคลื่อนที่ผ่านองค์ประกอบในคอนเทนเนอร์ โดยเป็นสะพานเชื่อมระหว่างอัลกอริธึมและโครงสร้างข้อมูล ด้วยการใช้ส่วนต่อประสานแบบเดียวกัน (begin/end) C++ สามารถบรรลุถึง การเขียนโปรแกรมแบบทั่วไปได้ ซึ่งทำให้ตรรกะเดียวกันสามารถประมวลผลข้อมูลที่หลากหลายได้ โดยไม่จำเป็นต้องทราบโครงสร้างหน่วยความจำเบื้องหลัง
⚠️ การไม่ถูกต้องของตัวชี้ (Iterator Invalidation): สำคัญมาก: ทุกการวนลูปที่ใช้ตัวชี้ (iterator) เพื่อเดินทางผ่านคอนเทนเนอร์ ห้ามเพิ่มข้อมูลลงในคอนเทนเนอร์นั้น หากทำเช่นนั้นอาจทำให้ตัวชี้เดิมกลายเป็น 'เก่า' (ไม่ถูกต้อง) ซึ่งนำไปสู่พฤติกรรมที่ไม่แน่นอน หรือโปรแกรมล้มเหลวได้
การดำเนินการมาตรฐาน
ฟังก์ชัน begin จะคืนค่าตัวชี้ไปยังองค์ประกอบแรก ในขณะที่ end จะคืนค่า ตัวบ่งชี้สิ้นสุด ซึ่งแสดงถึงตำแหน่งที่อยู่ต่อจากองค์ประกอบสุดท้าย
*iter: ใช้เพื่อดึงข้อมูลองค์ประกอบที่ตัวชี้ชี้อยู่++iter/--iter: การเคลื่อนที่==/!=: ตัวดำเนินการเปรียบเทียบเพื่อตรวจสอบตำแหน่ง
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>